package com.udc.medLine.transaction;

import java.util.List;

import com.udc.medLine.entity.CondicaoVO;
import com.udc.medLine.entity.Item;
import com.udc.medLine.entity.ItemVenda;
import com.udc.medLine.entity.Venda;
import com.udc.medLine.factory.FactoryItem;
import com.udc.medLine.factory.FactoryVenda;
import com.udc.medLine.factory.FactoryItemVenda;
import com.udc.medLine.persistence.Bd;

public class TransactionItemVenda {

	private ItemVenda itemVenda;
	private Venda venda;
	private Item item;
	private List listItemVenda;
	private List listVenda;
	private List listItem;
	private Bd banco;

	/**
	 * 
	 */
	public TransactionItemVenda() {
		super();
		itemVenda = new ItemVenda();
		venda = new Venda();
		try {
			banco = Bd.getInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
		// TODO Stub de construtor gerado automaticamente
	}

	public ItemVenda getItemVenda() {
		return itemVenda;
	}

	public void setItemVenda(ItemVenda new_itemVenda) {
		this.itemVenda = new_itemVenda;
	}

	public void remover(ItemVenda nItemVenda) throws Exception {
		banco.beginTransaction();
		FactoryItemVenda factory = new FactoryItemVenda();

		itemVenda.setId(nItemVenda.getId());
		factory.setItemVenda(itemVenda);
		factory.delete();
		banco.commit();
	}

	public void inserir(ItemVenda nItemVenda) throws Exception {
		banco.beginTransaction();
		FactoryItemVenda factory = new FactoryItemVenda();
		FactoryVenda factoryVenda = new FactoryVenda();
		FactoryItem factoryItem = new FactoryItem();

		venda.setId(nItemVenda.getVenda().getId());
		factoryVenda.setVenda(venda);
		venda = factoryVenda.obterVenda();

		item.setId(nItemVenda.getItem().getId());
		factoryItem.setItem(item);
		item = factoryItem.obterItem();

		itemVenda.setPreco(nItemVenda.getPreco());
		itemVenda.setQuantidade(nItemVenda.getQuantidade());
		itemVenda.setItem(item);
		itemVenda.setVenda(venda);
		factory.setItemVenda(itemVenda);
		factory.insert();
		banco.commit();
	}

	public void atualizar(ItemVenda nItemVenda) throws Exception {
		banco.beginTransaction();
		FactoryItemVenda factory = new FactoryItemVenda();
		FactoryVenda factoryVenda = new FactoryVenda();
		FactoryItem factoryItem = new FactoryItem();

		venda.setId(nItemVenda.getVenda().getId());
		factoryVenda.setVenda(venda);
		venda = factoryVenda.obterVenda();

		item.setId(nItemVenda.getItem().getId());
		factoryItem.setItem(item);
		item = factoryItem.obterItem();

		itemVenda.setId(nItemVenda.getId());
		itemVenda.setPreco(nItemVenda.getPreco());
		itemVenda.setQuantidade(nItemVenda.getQuantidade());
		itemVenda.setItem(item);
		itemVenda.setVenda(venda);
		factory.setItemVenda(itemVenda);
		factory.update();
		banco.commit();
	}

	public void obterListaItemVenda(String campo, String valor)
			throws Exception {
		banco.beginTransaction();
		FactoryItemVenda factory = new FactoryItemVenda();
		factory.setItemVenda(new ItemVenda());
		listItemVenda = factory.getItemVenda(campo, valor);
		banco.commit();
	}

	public void obterListaItemVenda() throws Exception {
		banco.beginTransaction();
		FactoryItemVenda factory = new FactoryItemVenda();
		factory.setItemVenda(new ItemVenda());
		listItemVenda = factory.getListaItemVenda();
		banco.commit();
	}

	/**
	 * @return the item
	 */
	public Item getItem() {
		return item;
	}

	/**
	 * @param item
	 *            the item to set
	 */
	public void setItem(Item item) {
		this.item = item;
	}

	/**
	 * @return the listItem
	 */
	public List getListItem() {
		return listItem;
	}

	/**
	 * @param listItem
	 *            the listItem to set
	 */
	public void setListItem(List listItem) {
		this.listItem = listItem;
	}

	public void obterItemVenda(ItemVenda nItemVenda) throws Exception {
		banco.beginTransaction();
		FactoryItemVenda factory = new FactoryItemVenda();
		itemVenda.setId(nItemVenda.getId());
		factory.setItemVenda(itemVenda);
		itemVenda = factory.obterItemVenda();
		banco.commit();
	}

	public void obterListaVenda() throws Exception {
		banco.beginTransaction();
		FactoryVenda factory = new FactoryVenda();
		listVenda = factory.getListaVenda();
		banco.commit();
	}

	public void obterListaItem() throws Exception {
		banco.beginTransaction();
		FactoryItem factory = new FactoryItem();
		listItem = factory.getListaItem();
		banco.commit();
	}

	/**
	 * @return
	 */
	public List getListItemVenda() {
		return listItemVenda;
	}

	/**
	 * @param list
	 */
	public void setListItemVenda(List list) {
		listItemVenda = list;
	}

	/**
	 * @return
	 */
	public Venda getVenda() {
		return venda;
	}

	/**
	 * @param venda
	 */
	public void setVenda(Venda venda) {
		this.venda = venda;
	}

	/**
	 * @return Returns the listVenda.
	 */
	public List getListVenda() {
		return listVenda;
	}

	/**
	 * @param listVenda
	 *            The listVenda to set.
	 */
	public void setListVenda(List listVenda) {
		this.listVenda = listVenda;
	}

	public List<ItemVenda> search(CondicaoVO condicao) throws Exception {
		banco.beginTransaction();
		FactoryItemVenda factory = new FactoryItemVenda();
		listItemVenda = factory.search(condicao);
		banco.commit();
		return listItemVenda;
	}
}
